package br.com.k19.actions;

import java.util.List;

import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import br.com.k19.dao.HibernateDAO;
import br.com.k19.dao.InterfaceDAO;
import br.com.k19.model.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class UsuarioAction extends ActionSupport {
	private static final long serialVersionUID = 1L;

	private Usuario usuario = new Usuario();
	private List<Usuario> usuarios;
	private InterfaceDAO<Usuario> dao = new HibernateDAO<>(null, Usuario.class);

	public String adicionaOuAltera() {
		dao.setManager(getEntityManager());

		if (usuario.getId() == null)
			dao.adiciona(usuario);
		else
			dao.altera(usuario);

		this.usuario = new Usuario();

		return SUCCESS;
	}

	public String remove() {
		dao.setManager(getEntityManager());
		dao.remove(usuario.getId());
		this.usuario = new Usuario();

		return SUCCESS;
	}

	public String preparaAlteracao() {
		dao.setManager(getEntityManager());
		this.usuario = dao.busca(usuario.getId());

		return SUCCESS;
	}

	public String lista() {
		dao.setManager(getEntityManager());
		this.usuarios = dao.lista();

		return SUCCESS;
	}

	private EntityManager getEntityManager() {
		HttpServletRequest request = ServletActionContext.getRequest();
		return (EntityManager) request.getAttribute("EntityManager");
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
}
